package com.bsi.login.oauth.handler;


import com.bsi.login.oauth.config.OauthFieldProperties;
import com.bsi.login.oauth.entity.Oauth2ReqParamVo;
import com.bsi.login.oauth.entity.OauthVisitModeEnum;
import org.springframework.http.HttpHeaders;
import org.springframework.lang.Nullable;
import org.springframework.util.MultiValueMap;

import javax.validation.constraints.NotNull;

/*
 * Author: liusongs
 * Date: 2019/10/18 11:13
 * Content: 顶层接口类 可自定义扩展
 */
public interface IOauthRequestHandler {

    /**
     * 调用oauth平台获取token，refresh_token，check_token.exit都可走这个方法)
     *
     * @param oauthVisitModeEnum 访问oauth服务模式
     * @param headers            请求头
     * @param params             参数
     * @param clazz              要转换的数据类型
     * @return
     */
    <T> T tokenHandler(@NotNull OauthVisitModeEnum oauthVisitModeEnum, @Nullable HttpHeaders headers, @NotNull Oauth2ReqParamVo params, @NotNull Class<T> clazz);


}
